//
//  CLBaseTool.h
//  togetherLBS
//
//  Created by louis on 15/7/30.
//  Copyright (c) 2015年 celi. All rights reserved.
//  基本的通用业务类

#import <Foundation/Foundation.h>
#import "CLHttpTool.h"

@class CLBaseParam;

@interface CLBaseTool : NSObject


//智能硬件测试使用
+ (void)getWithUrl:(NSString *)url param:(id)param success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  发送一个GET请求
 *
 *  @param url     请求路径
 *  @param params  请求参数
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
+ (void)getWithUrl:(NSString *)url param:(id)param resultClass:(Class)resultClass success:(void(^)(id))success failure:(void(^)(NSError *))failure;
/**
 *  发送一个GET请求，服务器返回image/jpeg类型的数据流，即通过协议接口获取照片
 *
 *  @param url     请求路径
 *  @param params  请求参数
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
+ (void)getImageWithUrl:(NSString *)url param:(id)param success:(void(^)(id))success failure:(void(^)(NSError *))failure;

/**
 *  发送一个GET请求，获取声音文件audio/basic
 *
 *  @param url     请求路径
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
+ (void)getVoiceDataWithUrl:(NSString *)url success:(void(^)(NSData *response))success failure:(void(^)(NSError *error))failure;

/**
 *  简单的POST请求
 *
 *  @param url     请求路径
 *  @param params  请求参数(普通的请求参数)
 *  @param resultClass 请求结果的class类别
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
+ (void)postWithUrl:(NSString *)url param:(CLBaseParam *)param resultClass:(Class)resultClass success:(void(^)(id))success failure:(void(^)(NSError *))failure;
/**
 *  上传文件的POST请求
 *
 *  @param url         请求路径
 *  @param param       请求参数(普通的请求参数)
 *  @param fileDatas   文件数据（数组中元素的类型为：CLFormData）
 *  @param resultClass 请求结果的class类别
 *  @param success     请求成功后的回调
 *  @param failure     请求失败后的回调
 */
+ (void)postWithUrl:(NSString *)url param:(id)param fileDatas:(NSArray *)fileDatas resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  取消当前的请求
 */
+ (void)cancelCurrent;

/**
 *  取消所有的请求
 */
+ (void)cancelAll;

@end
